package case_package1;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.http.HttpUtil;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static case_package1.Test.getInfos;

public class Test2 {
    public static void main(String[] args) {
        //利用糊涂包生成假数据，并写到文件中

        //1、定义网址
        String familyNameNet = "https://hanyu.baidu.com/s?wd=%E7%99%BE%E5%AE%B6%E5%A7%93&device=pc&from=home";
        String boyNameNet = "http://www.haoming8.cn/baobao/12560.html";
        String girlNameNet = "http://www.haoming8.cn/baobao/4155.html";

        //2、爬取数据
        String familyNameStr = HttpUtil.get(familyNameNet);
        String boyNameStr = HttpUtil.get(boyNameNet);
        String girlNameStr = HttpUtil.get(girlNameNet);

        //3、利用正则表达式获取数据
        List<String> familyNameTempList = ReUtil.findAll("(.{4})(，|。)", familyNameStr, 1);
        List<String> boyNameTempList = ReUtil.findAll("([\\u4E00-\\u9FA5]{2})(、|。)", boyNameStr, 1);
        List<String> girlNameTempList = ReUtil.findAll("(.. ){4}..", girlNameStr, 0);


        //4、处理数据
        //familyNameTempList（姓氏）
        //处理方案：把每一个姓氏拆开并添加到一个新的集合当中
        ArrayList<String> familyNameList = new ArrayList<>();
        for (String str : familyNameTempList) {
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                familyNameList.add(c + "");
            }
        }
        //System.out.println(familyNameList);

        //boyNameTempList（男生的名字）
        //处理方案：去除其中的重复元素
        ArrayList<String> boyNameList = new ArrayList<>();
        for (String str : boyNameTempList) {
            if (!boyNameList.contains(str)) {
                boyNameList.add(str);
            }
        }
        //System.out.println(boyNameList);

        //girlNameTempList（女生的姓名）
        //处理方案：把里面的每一个元素用空格进行切割，得到每一个女生的名字
        ArrayList<String> girlNameList = new ArrayList<>();
        for (String str : girlNameTempList) {
            String[] arr = str.split(" ");

            for (int i = 0; i < arr.length; i++) {
                girlNameList.add(arr[i]);
            }
        }
        //System.out.println(girlNameList);


        //5、生成数据
        //姓名（唯一）-性别-年龄
        ArrayList<String> infos = getInfos(familyNameList, boyNameList, girlNameList, 10, 15);
        Collections.shuffle(infos);
        //System.out.println(infos);

        //6、写出数据
        //细节：
        //糊涂包的相对路径，不是相对于当前项目而言的，而是相对于class文件而言的
        FileUtil.writeLines(infos, "/Users/zhaoxiaoyong/Documents/Java/" +
                "IO_stream_project/Case_module/src/NameInfos.txt", "UTF-8");
    }
}
